MODUL AJAR

PEMROGRAMAN WEB DENGAN PHP

Tutorial Lengkap dari Dasar hingga Mahir
Dilengkapi dengan Praktikum dan Studi Kasus
Disusun oleh: Bobi Heri Yanto, S.Kom.,M.Kom
Program Studi Informatika
@2026 - Universitas Dharma Indonesia

KATA PENGANTAR

Puji syukur ke hadirat Tuhan Yang Maha Esa atas tersusunnya Modul Ajar Pemrograman Web dengan PHP ini. Modul ini dirancang sebagai panduan komprehensif untuk mempelajari PHP mulai dari konsep dasar hingga aplikasi praktis.

PHP (Hypertext Preprocessor) merupakan bahasa pemrograman server-side yang paling populer digunakan dalam pengembangan web. Dengan menguasai PHP, peserta didik akan mampu membangun aplikasi web dinamis dan interaktif.

Modul ini disusun secara sistematis dengan pendekatan pembelajaran berbasis praktikum (hands-on learning). Setiap bab dilengkapi dengan:

  • Tujuan pembelajaran yang jelas
  • Materi teori yang ringkas dan mudah dipahami
  • Contoh kode yang lengkap
  • Praktikum untuk mengaplikasikan pemahaman
  • Latihan dan evaluasi

Kami berharap modul ini dapat membantu peserta didik dalam menguasai pemrograman PHP. Kritik dan saran yang membangun sangat kami harapkan untuk perbaikan di masa mendatang.

Tangerang, Januari 2026

Tim Penyusun

DAFTAR ISI

1 PHP HOME

Kompetensi Dasar

  • Memahami sejarah dan perkembangan PHP
  • Mengetahui kelebihan dan kekurangan PHP
  • Memahami arsitektur client-server

A. Pengenalan PHP

PHP (PHP: Hypertext Preprocessor) adalah bahasa scripting server-side yang dirancang khusus untuk pengembangan web. PHP pertama kali dikembangkan oleh Rasmus Lerdorf pada tahun 1994 dan telah berkembang menjadi salah satu bahasa pemrograman web paling populer di dunia.

Sejarah PHP

  • 1994: Rasmus Lerdorf membuat PHP/FI
  • 1997: Zeev Suraski dan Andi Gutmans menulis ulang parser PHP
  • 1998: PHP 3.0 dirilis
  • 2000: PHP 4.0 dengan Zend Engine 1.0
  • 2004: PHP 5.0 dengan Zend Engine II
  • 2015: PHP 7.0 dengan performa 2x lipat
  • 2020: PHP 8.0 dengan JIT compilation

Arsitektur PHP

PHP bekerja pada arsitektur client-server dengan alur sebagai berikut:

  1. Browser mengirim request ke server
  2. Server memproses file PHP
  3. Server mengeksekusi kode PHP
  4. Hasil eksekusi dikirim ke browser sebagai HTML

B. Kelebihan PHP

Aspek Kelebihan
Gratis PHP adalah open source, dapat digunakan tanpa biaya lisensi
Cross-platform Berjalan di Windows, Linux, Mac OS, dan berbagai platform lainnya
Dukungan Database Mendukung berbagai database (MySQL, PostgreSQL, Oracle, dll)
Komunitas Besar Dokumentasi lengkap dan komunitas aktif
Mudah Dipelajari Syntax sederhana dan mudah dipahami

โšก Praktikum 1: Program PHP Pertama

Tujuan: Membuat dan menjalankan program PHP sederhana

Langkah-langkah:

  1. Buat folder baru di htdocs (jika menggunakan XAMPP) dengan nama "belajar_php"
  2. Buat file baru dengan nama "index.php"
  3. Tulis kode berikut:
<?php
// Program PHP pertama
echo "<h1>Selamat Datang di PHP!</h1>";
echo "<p>Hari ini: " . date('d-m-Y H:i:s') . "</p>";

$nama = "PHP";
$versi = 8.0;
echo "<p>Anda sedang belajar $nama versi $versi</p>";
?>

Output yang diharapkan:

Selamat Datang di PHP!

Hari ini: 15-01-2024 14:30:25

Anda sedang belajar PHP versi 8

Catatan Penting:
  • File PHP harus disimpan dengan ekstensi .php
  • Kode PHP harus diapit dengan tag <?php ... ?>
  • Setiap pernyataan diakhiri dengan titik koma (;)

Latihan 1

  1. Buat program yang menampilkan biodata Anda (nama, umur, alamat, hobi)
  2. Tampilkan informasi versi PHP menggunakan fungsi phpversion()
  3. Buat program yang menampilkan tabel perkalian 5
  4. Tampilkan informasi server menggunakan $_SERVER
1

2 PHP INTRODUCTION

A. Konsep Dasar PHP

PHP adalah bahasa pemrograman server-side, artinya kode PHP dieksekusi di server, bukan di browser client. Hasil eksekusi dikirim ke browser dalam bentuk HTML murni.

Karakteristik PHP:

  • Server-side scripting: Kode dieksekusi di server
  • Embedded: PHP dapat disisipkan di dalam HTML
  • Dynamic typing: Tipe data ditentukan saat runtime
  • Case sensitive: Membedakan huruf besar/kecil untuk variable

Cara Kerja PHP:

  1. User meminta halaman web melalui browser
  2. Server web (Apache/Nginx) menerima request
  3. Server mengenali file .php dan mengirim ke PHP interpreter
  4. PHP interpreter mengeksekusi kode
  5. Hasil eksekusi (HTML) dikirim kembali ke browser

B. Integrasi PHP dengan HTML

PHP dapat diintegrasikan dengan HTML dalam beberapa cara:

Cara 1: PHP di dalam HTML

<!DOCTYPE html>
<html>
<head>
    <title><?php echo "Judul Halaman"; ?></title>
</head>
<body>
    <h1><?php echo "Selamat Datang"; ?></h1>
    <p>Sekarang jam <?php echo date('H:i:s'); ?></p>
</body>
</html>

Cara 2: HTML di dalam PHP

<?php
echo "<!DOCTYPE html>";
echo "<html>";
echo "<head><title>Contoh</title></head>";
echo "<body>";
echo "<h1>Halo Dunia</h1>";
echo "</body>";
echo "</html>";
?>

โšก Praktikum 2: Dinamisasi Halaman Web

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Halaman Dinamis dengan PHP</title>
    <style>
        body { font-family: Arial; margin: 40px; }
        .header { background: #3498db; color: white; padding: 20px; }
        .content { padding: 20px; background: #f4f4f4; }
        .footer { background: #333; color: white; padding: 10px; text-align: center; }
    </style>
</head>
<body>
    <div class="header">
        <h1><?php echo "Sistem Informasi Akademik"; ?></h1>
        <p>Tanggal: <?php echo date('d F Y'); ?></p>
    </div>
    
    <div class="content">
        <?php
        $nama = "Budi Santoso";
        $nim = "2024001";
        $prodi = "Teknik Informatika";
        $semester = 3;
        $ipk = 3.75;
        ?>
        
        <h2>Data Mahasiswa</h2>
        <table border="1" cellpadding="10">
            <tr><td>Nama</td><td><?php echo $nama; ?></td></tr>
            <tr><td>NIM</td><td><?php echo $nim; ?></td></tr>
            <tr><td>Program Studi</td><td><?php echo $prodi; ?></td></tr>
            <tr><td>Semester</td><td><?php echo $semester; ?></td></tr>
            <tr><td>IPK</td><td><?php echo $ipk; ?></td></tr>
        </table>
        
        <?php
        if ($ipk >= 3.5) {
            echo "<p style='color:green'>โœ… Predikat: Cumlaude</p>";
        } elseif ($ipk >= 3.0) {
            echo "<p style='color:blue'>๐Ÿ‘ Predikat: Sangat Memuaskan</p>";
        } else {
            echo "<p style='color:orange'>๐Ÿ“ Predikat: Memuaskan</p>";
        }
        ?>
    </div>
    
    <div class="footer">
        <p>&copy; <?php echo date('Y'); ?> - Universitas PHP</p>
    </div>
</body>
</html>
๐Ÿ’ก Pro Tip:

Gunakan kombinasi PHP dan HTML untuk membuat halaman yang dinamis. PHP menangani logika dan data, sementara HTML menangani tampilan.

3

3 PHP INSTALLATION

A. Persiapan Environment

Untuk menjalankan PHP, Anda membutuhkan web server dan database. Solusi terintegrasi yang paling populer:

Paket Komponen Sistem Operasi
XAMPP Apache + MySQL + PHP + Perl Windows, Linux, Mac
WAMP Apache + MySQL + PHP Windows
MAMP Apache + MySQL + PHP Mac, Windows
LAMP Linux + Apache + MySQL + PHP Linux

โšก Praktikum 3: Instalasi dan Konfigurasi XAMPP

Langkah 1: Download XAMPP

  1. Kunjungi situs resmi: https://www.apachefriends.org
  2. Pilih versi sesuai sistem operasi (Windows/Linux/Mac)
  3. Download installer (sekitar 150MB)

Langkah 2: Install XAMPP

  1. Jalankan file installer
  2. Pilih komponen: Apache, MySQL, PHP, phpMyAdmin
  3. Pilih direktori instalasi (default: C:\xampp)
  4. Selesaikan instalasi

Langkah 3: Verifikasi Instalasi

  1. Buka XAMPP Control Panel
  2. Start Apache dan MySQL
  3. Buka browser, ketik: http://localhost
  4. Buat file test.php di folder htdocs:
<?php
// File: test.php
echo "<h2>PHP berhasil terinstal!</h2>";
phpinfo(); // Menampilkan informasi konfigurasi PHP
?>

Langkah 4: Setting Path Environment (Windows)

  1. Buka System Properties โ†’ Environment Variables
  2. Tambah PATH: C:\xampp\php
  3. Verifikasi dengan command: php -v
๐Ÿ“Œ Troubleshooting:
  • Port 80 used: Ganti port Apache di httpd.conf
  • MySQL not starting: Hentikan service MySQL lain
  • Access denied: Jalankan XAMPP sebagai administrator
5

4 PHP SYNTAX

A. Aturan Dasar Syntax PHP

1. Tag PHP

<?php
// Kode PHP ditulis di sini
echo "Hello World";
?>

2. Short Tag (jika diaktifkan)

<?
echo "Hello World";
?>

3. Shortcut Echo

<?= "Hello World" ?> // Sama dengan <?php echo "Hello World"; ?>

Aturan Penting:

  • Setiap pernyataan diakhiri dengan titik koma (;)
  • Case-sensitive untuk variable
  • PHP dapat disisipkan di mana saja dalam HTML

โšก Praktikum 4: Berbagai Cara Penulisan PHP

<!DOCTYPE html>
<html>
<head>
    <title>Demo Syntax PHP</title>
</head>
<body>
    <!-- Cara 1: PHP murni -->
    <?php
    $nama = "Budi";
    echo "<h3>Halo $nama!</h3>";
    ?>
    
    <!-- Cara 2: PHP dalam HTML -->
    <h4>Sekarang jam <?php echo date('H:i'); ?> WIB</h4>
    
    <!-- Cara 3: Shortcut echo -->
    <p>Hari ini: <?= date('d-m-Y') ?></p>
    
    <!-- Cara 4: Multiple statements -->
    <?php
    $x = 5;
    $y = 10;
    $z = $x + $y;
    echo "<p>$x + $y = $z</p>";
    ?>
    
    <!-- Cara 5: PHP dan HTML bercampur -->
    <?php if (date('H') < 12): ?>
        <p style="color: blue">Selamat Pagi!</p>
    <?php else: ?>
        <p style="color: orange">Selamat Siang!</p>
    <?php endif; ?>
</body>
</html>
Best Practice:

Gunakan tag <?php ?> untuk kompatibilitas maksimum. Short tag (<? ?>) mungkin tidak aktif di beberapa server.

7

5 PHP COMMENTS

A. Jenis-jenis Komentar

Jenis Syntax Contoh
Single-line // atau # // Ini komentar satu baris
Multi-line /* ... */ /* Komentar
beberapa baris */
DocBlock /** ... */ /**
* Dokumentasi fungsi
*/

โšก Praktikum 5: Penggunaan Komentar

<?php
/**
 * File: kalkulator.php
 * Author: Tim Pengembang
 * Deskripsi: Program kalkulator sederhana
 */

// Mendefinisikan variable
$angka1 = 10; # ini juga komentar
$angka2 = 5;

/*
 * Blok komentar untuk operasi matematika
 * Menjelaskan setiap operasi yang dilakukan
 */
$tambah = $angka1 + $angka2;
$kurang = $angka1 - $angka2;
$kali = $angka1 * $angka2;
$bagi = $angka1 / $angka2;

// Menampilkan hasil
echo "<h3>Hasil Perhitungan</h3>";
echo "<ul>";
echo "<li>$angka1 + $angka2 = $tambah</li>";
echo "<li>$angka1 - $angka2 = $kurang</li>";
echo "<li>$angka1 * $angka2 = $kali</li>";
echo "<li>$angka1 / $angka2 = $bagi</li>";
echo "</ul>";
?>
๐Ÿ’ก Penggunaan Komentar yang Baik:
  • Jelaskan "mengapa", bukan "apa" (kode sudah menjelaskan apa)
  • Gunakan DocBlock untuk fungsi dan class
  • Komentari kode yang kompleks
  • Update komentar saat kode berubah
9

6 PHP VARIABLES

A. Konsep Variable

Variable adalah tempat menyimpan data di memori. Di PHP, variable diawali dengan tanda $.

Aturan Penamaan Variable:

  • Dimulai dengan $ diikuti huruf atau underscore
  • Hanya boleh mengandung huruf, angka, underscore
  • Tidak boleh mengandung spasi
  • Case-sensitive ($nama โ‰  $Nama โ‰  $NAMA)
  • Harus dimulai dengan huruf atau underscore, bukan angka

Contoh Variable Valid:

$nama
$_umur
$alamat_rumah
$namaLengkap
$var123

Contoh Variable Invalid:

$123nama    // Diawali angka
$nama-depan // Mengandung tanda hubung
$nama lengkap // Mengandung spasi

B. Variable Variables

PHP mendukung konsep "variable variables" dimana nama variable bisa dinamis.

$nama = "Budi";
$$nama = "Santoso"; // Membuat variable $Budi

echo $Budi; // Output: Santoso

โšก Praktikum 6: Implementasi Variable

<?php
// Deklarasi berbagai tipe variable
$nama = "John Doe";
$umur = 25;
$tinggi = 175.5;
$menikah = false;
$hobi = array("Membaca", "Olahraga", "Traveling");

// Menampilkan variable
echo "<h3>Data Diri</h3>";
echo "<table border='1' cellpadding='10'>";
echo "<tr><td>Nama</td><td>$nama</td></tr>";
echo "<tr><td>Umur</td><td>$umur tahun</td></tr>";
echo "<tr><td>Tinggi</td><td>$tinggi cm</td></tr>";
echo "<tr><td>Status</td><td>" . ($menikah ? "Menikah" : "Belum Menikah") . "</td></tr>";
echo "<tr><td>Hobi</td><td>" . implode(", ", $hobi) . "</td></tr>";
echo "</table>";

// Demonstrasi variable variables
$hewan = "kucing";
$$hewan = "persia"; // Membuat variable $kucing

echo "<p>Jenis kucing: " . $kucing . "</p>";

// Scope variable
$globalVar = "Saya variable global";

function testScope() {
    $localVar = "Saya variable lokal";
    
    // Mengakses variable global
    global $globalVar;
    
    echo "<p>Dalam fungsi: $localVar</p>";
    echo "<p>Dalam fungsi (global): $globalVar</p>";
}

testScope();
// echo $localVar; // Error: undefined variable
?>

Latihan 2: Variable

  1. Buat program yang menyimpan data mahasiswa (nim, nama, jurusan, angkatan)
  2. Hitung umur berdasarkan tahun lahir
  3. Buat program konversi suhu dari Celsius ke Fahrenheit
  4. Implementasikan variable variables untuk membuat sistem template sederhana
11

7 PHP ECHO / PRINT

A. Perbedaan Echo dan Print

Fitur echo print
Kecepatan Lebih cepat Lebih lambat
Return value Tidak ada Return 1
Multiple parameter Bisa Tidak bisa
Penggunaan echo "teks"; print "teks";

โšก Praktikum 7: Output dengan Echo dan Print

<?php
// Echo - bisa multiple parameter
echo "<h3>Demonstrasi Echo</h3>";
echo "Halo ", "dunia", "!<br>";

// Echo dengan kutip ganda (memproses variable)
$nama = "Budi";
echo "Nama saya $nama<br>";

// Echo dengan kutip tunggal (tidak memproses variable)
echo 'Nama saya $nama<br>';

// Echo dengan concatenation
echo "Nama saya " . $nama . "<br>";

// Print - hanya satu parameter
print "<h3>Demonstrasi Print</h3>";
print "Ini menggunakan print<br>";

// Print bisa digunakan dalam ekspresi
$hasil = print "Print mengembalikan nilai<br>";
echo "Nilai return print: " . $hasil . "<br>";

// Echo dengan HTML
echo "<div style='border:1px solid blue; padding:10px;'>";
echo "<p style='color:red'>Ini teks merah dalam div</p>";
echo "</div>";

// Print dengan HTML
print "<ul>";
print "<li>Item 1</li>";
print "<li>Item 2</li>";
print "</ul>";

// Shorthand echo (hanya dalam PHP tags)
?>
<p>Shorthand echo: <?= "Halo dari shorthand" ?></p>

<?php
// Output array
$array = ["apel", "jeruk", "mangga"];
echo "Isi array: " . implode(", ", $array) . "<br>";
print_r($array); // Fungsi khusus untuk debugging
?>
14

8 PHP DATA TYPES

A. Tipe Data di PHP

1. Tipe Data Sederhana

String
Kumpulan karakter, ditulis dengan kutip tunggal atau ganda
Integer
Bilangan bulat (non-desimal), bisa positif atau negatif
Float (Double)
Bilangan desimal atau pecahan
Boolean
Hanya memiliki dua nilai: true atau false

2. Tipe Data Kompleks

Array
Menyimpan multiple nilai dalam satu variable
Object
Instance dari sebuah class
NULL
Variable tanpa nilai
Resource
Referensi ke sumber daya eksternal

โšก Praktikum 8: Eksplorasi Tipe Data

<?php
// String
$string1 = "Ini string dengan kutip ganda";
$string2 = 'Ini string dengan kutip tunggal';
$string3 = "Bisa menyisipkan variable $string1";

// Integer
$integer1 = 42;
$integer2 = -17;
$integer3 = 0xFF; // Hexadecimal (255)
$integer4 = 0b1010; // Binary (10)

// Float
$float1 = 3.14;
$float2 = 1.2e3; // 1200
$float3 = 7E-10; // 0.0000000007

// Boolean
$benar = true;
$salah = false;

// Array
$array1 = [1, 2, 3, 4, 5];
$array2 = array("merah", "hijau", "biru");
$array3 = [
    "nama" => "Budi",
    "umur" => 25,
    "aktif" => true
];

// NULL
$nullVar = null;

// Menampilkan tipe data
echo "<h3>Demo Tipe Data PHP</h3>";

function displayVar($var, $nama) {
    echo "<b>$nama</b><br>";
    echo "Nilai: " . (is_null($var) ? "NULL" : $var) . "<br>";
    echo "Tipe: " . gettype($var) . "<br>";
    
    // Cek spesifik
    if (is_int($var)) echo "โœ“ Adalah integer<br>";
    if (is_string($var)) echo "โœ“ Adalah string<br>";
    if (is_float($var)) echo "โœ“ Adalah float<br>";
    if (is_bool($var)) echo "โœ“ Adalah boolean<br>";
    if (is_array($var)) echo "โœ“ Adalah array<br>";
    if (is_null($var)) echo "โœ“ Adalah NULL<br>";
    
    echo "<hr>";
}

displayVar($string1, "String");
displayVar($integer1, "Integer");
displayVar($float1, "Float");
displayVar($benar, "Boolean");
displayVar($array1, "Array");
displayVar($nullVar, "NULL");

// Type juggling
echo "<h4>Type Juggling (Konversi Otomatis)</h4>";
$angka = "10";
$hasil = $angka + 5; // String "10" dikonversi ke integer
echo "10 + 5 = $hasil<br>";

$total = 10 . " ekor kucing"; // Integer 10 dikonversi ke string
echo $total . "<br>";
?>
16

9 PHP STRINGS

A. Fungsi-fungsi String

Fungsi Deskripsi Contoh
strlen() Panjang string strlen("Hello") โ†’ 5
str_word_count() Jumlah kata str_word_count("Hello World") โ†’ 2
strrev() Membalik string strrev("Hello") โ†’ "olleH"
strpos() Posisi teks strpos("Hello World", "World") โ†’ 6
str_replace() Mengganti teks str_replace("World", "PHP", "Hello World")

โšก Praktikum 9: Manipulasi String

<?php
$teks = "Belajar PHP sangat menyenangkan di tahun 2024!";

echo "<h3>Manipulasi String</h3>";
echo "Teks asli: $teks<br><br>";

// Informasi dasar
echo "Panjang string: " . strlen($teks) . " karakter<br>";
echo "Jumlah kata: " . str_word_count($teks) . " kata<br>";
echo "Jumlah kata (dengan angka): " . str_word_count($teks, 0, '0123456789') . "<br>";

// Modifikasi string
echo "<h4>Modifikasi String</h4>";
echo "Huruf besar: " . strtoupper($teks) . "<br>";
echo "Huruf kecil: " . strtolower($teks) . "<br>";
echo "Huruf pertama kapital: " . ucfirst($teks) . "<br>";
echo "Setiap kata kapital: " . ucwords($teks) . "<br>";
echo "String dibalik: " . strrev($teks) . "<br>";

// Mencari dan mengganti
echo "<h4>Pencarian dan Penggantian</h4>";
$posisi = strpos($teks, "PHP");
echo "Posisi kata 'PHP': $posisi<br>";

if (str_contains($teks, "PHP")) {
    echo "Teks mengandung kata 'PHP'<br>";
}

if (str_starts_with($teks, "Belajar")) {
    echo "Teks dimulai dengan 'Belajar'<br>";
}

if (str_ends_with($teks, "2024!")) {
    echo "Teks diakhiri dengan '2024!'<br>";
}

$ganti = str_replace("PHP", "Pemrograman", $teks);
echo "Setelah diganti: $ganti<br>";

// Memotong dan memformat
echo "<h4>Memotong dan Memformat</h4>";
echo "10 karakter pertama: " . substr($teks, 0, 10) . "...<br>";
echo "10 karakter terakhir: ..." . substr($teks, -10) . "<br>";
echo "Karakter ke 8-15: " . substr($teks, 8, 7) . "<br>";

// Menghapus whitespace
$stringDenganSpasi = "  Halo  ";
echo "'" . $stringDenganSpasi . "' โ†’ setelah trim: '" . trim($stringDenganSpasi) . "'<br>";

// Menggabungkan dan memisah
echo "<h4>Penggabungan dan Pemisahan</h4>";
$parts = explode(" ", $teks);
echo "Hasil explode: ";
print_r($parts);
echo "<br>";

$gabung = implode(" - ", $parts);
echo "Hasil implode: $gabung<br>";

// HTML entities
$htmlString = "<script>alert('xss')</script>";
echo "HTML entities: " . htmlspecialchars($htmlString) . "<br>";

// Format angka dalam string
$harga = 1500000;
echo "Harga: Rp " . number_format($harga, 0, ',', '.') . "<br>";

// MD5 dan SHA1 (hash)
echo "MD5 dari 'password': " . md5("password") . "<br>";
echo "SHA1 dari 'password': " . sha1("password") . "<br>";
?>
19

STUDI KASUS: APLIKASI MANAJEMEN SISWA

Membangun Aplikasi CRUD Sederhana

Sebagai final project, kita akan membangun aplikasi manajemen data siswa dengan fitur:

  • Create: Tambah data siswa baru
  • Read: Menampilkan daftar siswa
  • Update: Mengubah data siswa
  • Delete: Menghapus data siswa
  • Search: Mencari data siswa
  • Pagination: Membagi data per halaman
<?php
/**
 * Aplikasi Manajemen Data Siswa
 * Mengintegrasikan semua konsep PHP yang telah dipelajari
 */

// Koneksi ke database
$host = "localhost";
$user = "root";
$pass = "";
$db = "sekolah";

$conn = new mysqli($host, $user, $pass, $db);

if ($conn->connect_error) {
    die("Koneksi gagal: " . $conn->connect_error);
}

// Fungsi untuk membersihkan input
function cleanInput($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

// Proses CRUD
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (isset($_POST['tambah'])) {
        $nis = cleanInput($_POST['nis']);
        $nama = cleanInput($_POST['nama']);
        $kelas = cleanInput($_POST['kelas']);
        $alamat = cleanInput($_POST['alamat']);
        
        $sql = "INSERT INTO siswa (nis, nama, kelas, alamat) 
                VALUES ('$nis', '$nama', '$kelas', '$alamat')";
        
        if ($conn->query($sql) === TRUE) {
            echo "<script>alert('Data berhasil ditambahkan');</script>";
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
    }
}

// Tampilkan data dengan pagination
$limit = 10;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$start = ($page - 1) * $limit;

$sql = "SELECT * FROM siswa ORDER BY id DESC LIMIT $start, $limit";
$result = $conn->query($sql);

$total = $conn->query("SELECT COUNT(*) as total FROM siswa")->fetch_assoc()['total'];
$pages = ceil($total / $limit);
?>

<!DOCTYPE html>
<html>
<head>
    <title>Manajemen Data Siswa</title>
    <style>
        * { font-family: Arial; margin: 0; padding: 0; }
        .container { max-width: 1200px; margin: 0 auto; padding: 20px; }
        .header { background: #2c3e50; color: white; padding: 20px; text-align: center; }
        .form-tambah { background: #f4f4f4; padding: 20px; margin: 20px 0; border-radius: 5px; }
        .form-group { margin-bottom: 15px; }
        .form-group label { display: block; margin-bottom: 5px; }
        .form-group input, .form-group textarea { width: 100%; padding: 8px; border: 1px solid #ddd; }
        .btn { background: #3498db; color: white; padding: 10px 20px; border: none; cursor: pointer; }
        .btn:hover { background: #2980b9; }
        table { width: 100%; border-collapse: collapse; margin: 20px 0; }
        th { background: #2c3e50; color: white; padding: 12px; }
        td { padding: 10px; border: 1px solid #ddd; }
        tr:nth-child(even) { background: #f2f2f2; }
        .pagination { text-align: center; margin: 20px 0; }
        .pagination a { display: inline-block; padding: 8px 16px; background: #f4f4f4; margin: 0 5px; text-decoration: none; color: #333; }
        .pagination a.active { background: #3498db; color: white; }
    </style>
</head>
<body>
    <div class="header">
        <h1>Sistem Informasi Data Siswa</h1>
        <p>Total Siswa: <?php echo $total; ?></p>
    </div>
    
    <div class="container">
        <div class="form-tambah">
            <h2>Tambah Data Siswa Baru</h2>
            <form method="POST" action="">
                <div class="form-group">
                    <label>NIS:</label>
                    <input type="text" name="nis" required>
                </div>
                <div class="form-group">
                    <label>Nama Lengkap:</label>
                    <input type="text" name="nama" required>
                </div>
                <div class="form-group">
                    <label>Kelas:</label>
                    <input type="text" name="kelas" required>
                </div>
                <div class="form-group">
                    <label>Alamat:</label>
                    <textarea name="alamat" rows="3" required></textarea>
                </div>
                <button type="submit" name="tambah" class="btn">Tambah Data</button>
            </form>
        </div>
        
        <h2>Daftar Siswa</h2>
        <table>
            <tr>
                <th>ID</th>
                <th>NIS</th>
                <th>Nama</th>
                <th>Kelas</th>
                <th>Alamat</th>
                <th>Aksi</th>
            </tr>
                      <?php if ($result->num_rows > 0): ?>
                <?php while($row = $result->fetch_assoc()): ?>
                <tr>
                    <td><?php echo $row['id']; ?></td>
                    <td><?php echo $row['nis']; ?></td>
                    <td><?php echo $row['nama']; ?></td>
                    <td><?php echo $row['kelas']; ?></td>
                    <td><?php echo $row['alamat']; ?></td>
                    <td>
                        <a href="edit.php?id=<?php echo $row['id']; ?>" class="btn" style="background: #27ae60;">Edit</a>
                        <a href="hapus.php?id=<?php echo $row['id']; ?>" class="btn" style="background: #c0392b;" onclick="return confirm('Yakin ingin menghapus?')">Hapus</a>
                    </td>
                </tr>
                <?php endwhile; ?>
            <?php else: ?>
                <tr>
                    <td colspan="6" style="text-align: center; padding: 20px;">Belum ada data siswa</td>
                </tr>
            <?php endif; ?>
        </table>
        
        <!-- Pagination -->
        <div class="pagination">
            <?php if($page > 1): ?>
                <a href="?page=<?php echo $page-1; ?>">« Previous</a>
            <?php endif; ?>
            
            <?php for($i = 1; $i <= $pages; $i++): ?>
                <a href="?page=<?php echo $i; ?>" class="<?php echo ($page == $i) ? 'active' : ''; ?>"><?php echo $i; ?></a>
            <?php endfor; ?>
            
            <?php if($page < $pages): ?>
                <a href="?page=<?php echo $page+1; ?>">Next »</a>
            <?php endif; ?>
        </div>
        
        <!-- Informasi Page -->
        <p style="text-align: center; margin-top: 10px;">
            Menampilkan halaman <?php echo $page; ?> dari <?php echo $pages; ?> halaman
        </p>
    </div>
</body>
</html>

<?php
$conn->close();
?>
๐Ÿ“Œ Struktur Database:
CREATE DATABASE sekolah;
USE sekolah;

CREATE TABLE siswa (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nis VARCHAR(20) NOT NULL,
    nama VARCHAR(100) NOT NULL,
    kelas VARCHAR(20),
    alamat TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

10 PHP NUMBERS

A. Sistem Bilangan di PHP

PHP mendukung berbagai format bilangan:

Jenis Format Contoh
Desimal Basis 10 123, -456, 0
Heksadesimal 0x diikuti angka 0-9 A-F 0xFF (255), 0x1A (26)
Oktal 0 diikuti angka 0-7 077 (63), 0123 (83)
Biner 0b diikuti 0/1 0b1010 (10), 0b1111 (15)
Float Notasi desimal atau E 3.14, 1.2e3 (1200)

โšก Praktikum 10: Operasi Numerik

<?php
// Deklarasi berbagai format angka
$desimal = 255;
$heksadesimal = 0xFF;  // 255
$oktal = 0377;          // 255
$biner = 0b11111111;    // 255

echo "<h3>Sistem Bilangan</h3>";
echo "Desimal 255 = Heksadesimal: " . dechex(255) . "<br>";
echo "Desimal 255 = Oktal: " . decoct(255) . "<br>";
echo "Desimal 255 = Biner: " . decbin(255) . "<br>";

// Operasi matematika lanjutan
echo "<h3>Operasi Matematika</h3>";
$angka = [23, 45, 67, 89, 12, 34, 56];

echo "Array: " . implode(", ", $angka) . "<br>";
echo "Nilai maksimum: " . max($angka) . "<br>";
echo "Nilai minimum: " . min($angka) . "<br>";
echo "Rata-rata: " . array_sum($angka) / count($angka) . "<br>";

// Fungsi matematika
$bilangan = -25.67;
echo "<h4>Fungsi Matematika</h4>";
echo "Nilai absolut dari $bilangan: " . abs($bilangan) . "<br>";
echo "Pembulatan ke atas: " . ceil($bilangan) . "<br>";
echo "Pembulatan ke bawah: " . floor($bilangan) . "<br>";
echo "Pembulatan biasa: " . round($bilangan, 1) . "<br>";

// Bilangan random
echo "<h4>Bilangan Random</h4>";
echo "Random 1-10: " . rand(1, 10) . "<br>";
echo "Random lebih aman: " . random_int(1, 100) . "<br>";

// Konversi dan validasi
echo "<h4>Validasi Angka</h4>";
$testAngka = ["123", "12.3", "abc", "0xFF", " 123 ", "12,3"];

foreach ($testAngka as $t) {
    echo "'$t' : ";
    if (is_numeric($t)) {
        echo "โœ“ Numerik";
        if (is_int($t + 0)) echo " (Integer)";
        else echo " (Float)";
    } else {
        echo "โœ— Bukan numerik";
    }
    echo "<br>";
}
?>
22

11 PHP CASTING

A. Type Casting

Casting adalah proses mengubah tipe data suatu nilai ke tipe data lain.

Operator Cast Tujuan Contoh
(int), (integer) Ke integer (int) "123" โ†’ 123
(float), (double), (real) Ke float (float) "3.14" โ†’ 3.14
(string) Ke string (string) 123 โ†’ "123"
(bool), (boolean) Ke boolean (bool) 0 โ†’ false
(array) Ke array (array) "halo" โ†’ ["halo"]
(object) Ke object (object) ["a" => 1]

โšก Praktikum 11: Implementasi Type Casting

<?php
// Data sample
$stringAngka = "123.45";
$stringBukanAngka = "123abc";
$angkaInteger = 100;
$angkaFloat = 99.99;
$booleanTrue = true;
$booleanFalse = false;
$arrayData = [1, 2, 3];
$nullValue = null;

echo "<h3>Type Casting Demonstration</h3>";

// Fungsi untuk menampilkan hasil casting
function showCast($original, $type) {
    $originalType = gettype($original);
    $originalValue = is_bool($original) ? ($original ? 'true' : 'false') : $original;
    
    echo "<b>Original:</b> $originalValue ($originalType)<br>";
    
    switch($type) {
        case 'int':
            $result = (int)$original;
            break;
        case 'float':
            $result = (float)$original;
            break;
        case 'string':
            $result = (string)$original;
            break;
        case 'bool':
            $result = (bool)$original;
            $result = $result ? 'true' : 'false';
            break;
        case 'array':
            $result = (array)$original;
            $result = '[' . implode(', ', $result) . ']';
            break;
    }
    
    $resultType = gettype($type == 'bool' ? ($result == 'true') : $result);
    echo "<b>Hasil casting ke $type:</b> $result ($resultType)<br><br>";
}

echo "<h4>Casting String ke Integer</h4>";
showCast($stringAngka, 'int');
showCast($stringBukanAngka, 'int');

echo "<h4>Casting ke Float</h4>";
showCast($stringAngka, 'float');
showCast($angkaInteger, 'float');

echo "<h4>Casting ke Boolean</h4>";
showCast(0, 'bool');
showCast(1, 'bool');
showCast("", 'bool');
showCast("0", 'bool');
showCast("hello", 'bool');
showCast(null, 'bool');
showCast([], 'bool');

echo "<h4>Casting ke String</h4>";
showCast($angkaFloat, 'string');
showCast($booleanTrue, 'string');
showCast($nullValue, 'string');

echo "<h4>Casting ke Array</h4>";
showCast($angkaInteger, 'array');
showCast($stringAngka, 'array');

// Settype (mengubah tipe secara permanen)
echo "<h4>Menggunakan settype()</h4>";
$var = "100.5";
echo "Sebelum settype: " . gettype($var) . " nilai: $var<br>";
settype($var, "int");
echo "Setelah settype ke int: " . gettype($var) . " nilai: $var<br>";

// Implicit casting (type juggling)
echo "<h4>Implicit Casting (Type Juggling)</h4>";
$jumlah = "10" + 5;      // String "10" jadi integer
echo '"10" + 5 = ' . $jumlah . ' (' . gettype($jumlah) . ')<br>';

$gabung = "Angka: " . 100; // Integer 100 jadi string
echo $gabung . ' (' . gettype($gabung) . ')<br>';

$kali = "2.5" * 3;        // String "2.5" jadi float
echo '"2.5" * 3 = ' . $kali . ' (' . gettype($kali) . ')<br>';
?>
โš ๏ธ Perhatian:
  • Casting string non-numerik ke integer akan menghasilkan 0
  • Casting float ke integer akan memotong bagian desimal (tidak membulatkan)
  • Casting ke boolean: 0, "0", "", null, [] akan menjadi false
25

12 PHP MATH

A. Fungsi Matematika PHP

PHP menyediakan berbagai fungsi matematika bawaan.

Fungsi Dasar:

Fungsi Deskripsi Contoh
abs() Nilai absolut abs(-5) โ†’ 5
round() Pembulatan round(3.7) โ†’ 4
ceil() Pembulatan ke atas ceil(3.1) โ†’ 4
floor() Pembulatan ke bawah floor(3.9) โ†’ 3
sqrt() Akar kuadrat sqrt(25) โ†’ 5
pow() Pangkat pow(2,3) โ†’ 8
min() Nilai terkecil min(5,2,8) โ†’ 2
max() Nilai terbesar max(5,2,8) โ†’ 8

โšก Praktikum 12: Aplikasi Matematika

<?php
// Konstanta matematika
echo "<h3>Konstanta Matematika</h3>";
echo "Pi (ฯ€): " . pi() . "<br>";
echo "e (bilangan natural): " . M_E . "<br>";
echo "log10(e): " . M_LOG10E . "<br>";
echo "โˆš2: " . M_SQRT2 . "<br>";
echo "โˆšฯ€: " . M_SQRTPI . "<br>";

// Kalkulator ilmiah
class ScientificCalculator {
    public function tambah($a, $b) { return $a + $b; }
    public function kurang($a, $b) { return $a - $b; }
    public function kali($a, $b) { return $a * $b; }
    public function bagi($a, $b) { return $b != 0 ? $a / $b : "Error: division by zero"; }
    public function pangkat($a, $b) { return pow($a, $b); }
    public function akar($a) { return sqrt($a); }
    public function log10($a) { return log10($a); }
    public function logNatural($a) { return log($a); }
    public function sin($a) { return sin(deg2rad($a)); }
    public function cos($a) { return cos(deg2rad($a)); }
    public function tan($a) { return tan(deg2rad($a)); }
    public function faktorial($n) {
        if ($n <= 1) return 1;
        return $n * $this->faktorial($n - 1);
    }
    public function kombinasi($n, $r) {
        return $this->faktorial($n) / ($this->faktorial($r) * $this->faktorial($n - $r));
    }
    public function permutasi($n, $r) {
        return $this->faktorial($n) / $this->faktorial($n - $r);
    }
}

$calc = new ScientificCalculator();

echo "<h3>Demo Kalkulator Ilmiah</h3>";
echo "2 + 3 = " . $calc->tambah(2, 3) . "<br>";
echo "10 - 4 = " . $calc->kurang(10, 4) . "<br>";
echo "6 ร— 7 = " . $calc->kali(6, 7) . "<br>";
echo "15 รท 3 = " . $calc->bagi(15, 3) . "<br>";
echo "2 pangkat 8 = " . $calc->pangkat(2, 8) . "<br>";
echo "โˆš144 = " . $calc->akar(144) . "<br>";
echo "log10(1000) = " . $calc->log10(1000) . "<br>";
echo "ln(eยฒ) = " . $calc->logNatural(exp(2)) . "<br>";
echo "sin(30ยฐ) = " . $calc->sin(30) . "<br>";
echo "cos(60ยฐ) = " . $calc->cos(60) . "<br>";
echo "tan(45ยฐ) = " . $calc->tan(45) . "<br>";
echo "5! (faktorial) = " . $calc->faktorial(5) . "<br>";
echo "C(10,3) (kombinasi) = " . $calc->kombinasi(10, 3) . "<br>";
echo "P(10,3) (permutasi) = " . $calc->permutasi(10, 3) . "<br>";

// Trigonometri
echo "<h4>Tabel Trigonometri</h4>";
echo "<table border='1' cellpadding='8'>";
echo "<tr><th>Sudut (ยฐ)</th><th>sin</th><th>cos</th><th>tan</th></tr>";
for ($sudut = 0; $sudut <= 360; $sudut += 30) {
    echo "<tr>";
    echo "<td>$sudutยฐ</td>";
    echo "<td>" . round(sin(deg2rad($sudut)), 4) . "</td>";
    echo "<td>" . round(cos(deg2rad($sudut)), 4) . "</td>";
    echo "<td>" . (cos(deg2rad($sudut)) == 0 ? "โˆž" : round(tan(deg2rad($sudut)), 4)) . "</td>";
    echo "</tr>";
}
echo "</table>";

// Statistik
$data = [12, 15, 18, 20, 22, 25, 28, 30, 32, 35];
echo "<h4>Analisis Statistik</h4>";
echo "Data: " . implode(", ", $data) . "<br>";
echo "Mean (rata-rata): " . array_sum($data) / count($data) . "<br>";
echo "Median: " . (($data[4] + $data[5]) / 2) . "<br>";
echo "Range: " . (max($data) - min($data)) . "<br>";
?>
28

13 PHP CONSTANTS

A. Konstanta di PHP

Konstanta adalah identifier untuk nilai sederhana yang tidak dapat berubah selama script berjalan.

Cara Membuat Konstanta:

  1. define() - define("NAMA", nilai, case-insensitive)
  2. const - const NAMA = nilai (PHP 5.3+)

Perbedaan Variable dan Konstanta:

Aspek Variable Konstanta
Prefix $ Tidak pakai $
Dapat diubah Ya Tidak
Scope Lokal Global
Waktu definisi Runtime Compile time

โšก Praktikum 13: Implementasi Konstanta

<?php
// Mendefinisikan konstanta dengan define()
define("NAMA_APLIKASI", "Sistem Informasi Akademik");
define("VERSI", "2.0.0");
define("TAHUN_PEMBUATAN", 2024);
define("PENGEMBANG", "Tim IT Universitas");
define("MAX_LOGIN_ATTEMPT", 3);
define("SESSION_TIMEOUT", 3600); // 1 jam dalam detik
define("BASE_URL", "http://localhost/siakad/");
define("UPLOAD_PATH", __DIR__ . "/uploads/");

// Mendefinisikan konstanta dengan const (PHP 5.3+)
const DATABASE = [
    "host" => "localhost",
    "username" => "root",
    "password" => "",
    "database" => "akademik",
    "port" => 3306,
    "charset" => "utf8mb4"
];

const APP_SETTINGS = [
    "name" => NAMA_APLIKASI,
    "version" => VERSI,
    "debug" => true,
    "timezone" => "Asia/Jakarta",
    "locale" => "id_ID"
];

// Konstanta untuk role user
const ROLE_ADMIN = "admin";
const ROLE_DOSEN = "dosen";
const ROLE_MAHASISWA = "mahasiswa";
const ROLE_TU = "tata_usaha";

// Konstanta untuk status
const STATUS_AKTIF = 1;
const STATUS_NONAKTIF = 0;
const STATUS_DRAFT = 2;
const STATUS_PUBLISH = 3;

// Menggunakan konstanta
echo "<h3>Informasi Aplikasi</h3>";
echo "Nama Aplikasi: " . NAMA_APLIKASI . "<br>";
echo "Versi: " . VERSI . "<br>";
echo "Tahun: " . TAHUN_PEMBUATAN . "<br>";
echo "Pengembang: " . PENGEMBANG . "<br>";
echo "Base URL: " . BASE_URL . "<br>";
echo "Upload Path: " . UPLOAD_PATH . "<br>";
echo "Session Timeout: " . (SESSION_TIMEOUT / 60) . " menit<br>";

echo "<h3>Konfigurasi Database</h3>";
echo "Host: " . DATABASE['host'] . "<br>";
echo "Database: " . DATABASE['database'] . "<br>";
echo "Port: " . DATABASE['port'] . "<br>";
echo "Charset: " . DATABASE['charset'] . "<br>";

echo "<h3>Application Settings</h3>";
echo "Debug Mode: " . (APP_SETTINGS['debug'] ? "Enabled" : "Disabled") . "<br>";
echo "Timezone: " . APP_SETTINGS['timezone'] . "<br>";
echo "Locale: " . APP_SETTINGS['locale'] . "<br>";

// Fungsi untuk mengecek konstanta
function checkConstant($name) {
    if (defined($name)) {
        echo "Konstanta $name terdefinisi dengan nilai: " . constant($name) . "<br>";
    } else {
        echo "Konstanta $name tidak terdefinisi<br>";
    }
}

echo "<h3>Cek Konstanta</h3>";
checkConstant("NAMA_APLIKASI");
checkConstant("VERSI");
checkConstant("UNDEFINED_CONSTANT");

// Contoh penggunaan dalam aplikasi
class Config {
    private $settings = [];
    
    public function __construct() {
        // Load semua konstanta
        $this->settings['app'] = APP_SETTINGS;
        $this->settings['db'] = DATABASE;
        $this->settings['roles'] = [
            ROLE_ADMIN,
            ROLE_DOSEN,
            ROLE_MAHASISWA,
            ROLE_TU
        ];
    }
    
    public function get($key) {
        return $this->settings[$key] ?? null;
    }
    
    public function isDebug() {
        return APP_SETTINGS['debug'];
    }
}

$config = new Config();
echo "<h3>Menggunakan Config Class</h3>";
echo "Debug mode: " . ($config->isDebug() ? "Yes" : "No") . "<br>";
echo "Available roles: " . implode(", ", $config->get('roles')) . "<br>";
?>
31

14 PHP MAGIC CONSTANTS

A. Magic Constants

Magic constants adalah konstanta bawaan PHP yang berubah-ubah tergantung di mana mereka digunakan.

Konstanta Deskripsi Contoh
__LINE__ Nomor baris saat ini echo __LINE__; // 15
__FILE__ Path lengkap file C:\xampp\htdocs\index.php
__DIR__ Direktori file C:\xampp\htdocs
__FUNCTION__ Nama fungsi testFunction
__CLASS__ Nama kelas MyClass
__METHOD__ Nama method kelas MyClass::myMethod
__NAMESPACE__ Nama namespace MyNamespace
__TRAIT__ Nama trait MyTrait

โšก Praktikum 14: Demonstrasi Magic Constants

<?php
namespace University\Academic;

echo "<h3>Magic Constants Demonstration</h3>";

// Di scope global
echo "<h4>Global Scope</h4>";
echo "File: " . __FILE__ . "<br>";
echo "Directory: " . __DIR__ . "<br>";
echo "Line: " . __LINE__ . "<br>";
echo "Namespace: " . __NAMESPACE__ . "<br>";

// Dalam fungsi
function testFunction() {
    echo "<h4>Dalam Fungsi</h4>";
    echo "Nama fungsi: " . __FUNCTION__ . "<br>";
    echo "File: " . __FILE__ . "<br>";
    echo "Line: " . __LINE__ . "<br>";
    echo "Namespace: " . __NAMESPACE__ . "<br>";
}

testFunction();

// Dalam class
class Student {
    private $name;
    private $nim;
    
    public function __construct($name, $nim) {
        $this->name = $name;
        $this->nim = $nim;
        
        echo "<h4>Constructor Class</h4>";
        echo "Class: " . __CLASS__ . "<br>";
        echo "Method: " . __METHOD__ . "<br>";
        echo "File: " . __FILE__ . "<br>";
        echo "Line: " . __LINE__ . "<br>";
        echo "Namespace: " . __NAMESPACE__ . "<br>";
    }
    
    public function showInfo() {
        echo "<h4>Method showInfo</h4>";
        echo "Nama: {$this->name}<br>";
        echo "NIM: {$this->nim}<br>";
        echo "Method saat ini: " . __METHOD__ . "<br>";
        echo "Class saat ini: " . __CLASS__ . "<br>";
    }
    
    public static function getClassInfo() {
        return [
            'class' => __CLASS__,
            'method' => __METHOD__,
            'namespace' => __NAMESPACE__,
            'file' => __FILE__
        ];
    }
}

$student = new Student("Budi Santoso", "2024001");
$student->showInfo();

// Trait
trait Loggable {
    public function log($message) {
        echo "<h4>Trait Loggable</h4>";
        echo "Trait: " . __TRAIT__ . "<br>";
        echo "Class menggunakan trait: " . __CLASS__ . "<br>";
        echo "Method: " . __METHOD__ . "<br>";
        echo "Log: $message<br>";
    }
}

class Course {
    use Loggable;
    
    private $name;
    
    public function __construct($name) {
        $this->name = $name;
        $this->log("Course {$this->name} created");
    }
}

$course = new Course("Pemrograman PHP");

// Aplikasi praktis untuk logging
class Logger {
    private $logFile;
    
    public function __construct($logFile = 'app.log') {
        $this->logFile = $logFile;
    }
    
    public function write($message, $level = 'INFO') {
        $logEntry = sprintf(
            "[%s] [%s] [File: %s, Line: %d, Function: %s] %s\n",
            date('Y-m-d H:i:s'),
            $level,
            __FILE__,
            __LINE__,
            __FUNCTION__,
            $message
        );
        
        file_put_contents($this->logFile, $logEntry, FILE_APPEND);
        echo "Log written: " . htmlspecialchars($logEntry) . "<br>";
    }
}

$logger = new Logger();
$logger->write("User login successful", "INFO");
$logger->write("Database connection failed", "ERROR");

// Debug helper
function debugInfo() {
    $backtrace = debug_backtrace();
    $caller = $backtrace[0];
    
    echo "<h4>Debug Information</h4>";
    echo "File: " . ($caller['file'] ?? __FILE__) . "<br>";
    echo "Line: " . ($caller['line'] ?? __LINE__) . "<br>";
    echo "Function: " . ($caller['function'] ?? __FUNCTION__) . "<br>";
    echo "Class: " . ($caller['class'] ?? 'N/A') . "<br>";
    echo "Type: " . ($caller['type'] ?? 'N/A') . "<br>";
}

debugInfo();
?>
34

15 PHP OPERATORS

A. Jenis-jenis Operator

1. Operator Aritmatika

OperatorNamaContohHasil
+Penjumlahan5 + 38
-Pengurangan5 - 32
*Perkalian5 * 315
/Pembagian15 / 35
%Modulus7 % 31
**Pangkat2 ** 38

2. Operator Perbandingan

OperatorNamaContohHasil
==Sama dengan5 == "5"true
===Identik5 === "5"false
!=Tidak sama5 != 3true
<>Tidak sama5 <> 3true
!==Tidak identik5 !== "5"true
>Lebih besar5 > 3true
<Lebih kecil5 < 3false
>=Lebih besar sama5 >= 5true
<=Lebih kecil sama5 <= 3false
<=>Spaceship5 <=> 31

โšก Praktikum 15: Semua Jenis Operator

<?php
// 1. Operator Aritmatika
$a = 15;
$b = 4;

echo "<h3>1. Operator Aritmatika</h3>";
echo "\$a = $a, \$b = $b<br>";
echo "\$a + \$b = " . ($a + $b) . "<br>";
echo "\$a - \$b = " . ($a - $b) . "<br>";
echo "\$a * \$b = " . ($a * $b) . "<br>";
echo "\$a / \$b = " . ($a / $b) . "<br>";
echo "\$a % \$b = " . ($a % $b) . "<br>";
echo "\$a ** \$b = " . ($a ** $b) . "<br>";

// 2. Operator Penugasan
echo "<h3>2. Operator Penugasan</h3>";
$x = 10;
echo "\$x = $x<br>";
$x += 5;  echo "\$x += 5 โ†’ $x<br>";
$x -= 3;  echo "\$x -= 3 โ†’ $x<br>";
$x *= 2;  echo "\$x *= 2 โ†’ $x<br>";
$x /= 4;  echo "\$x /= 4 โ†’ $x<br>";
$x %= 3;  echo "\$x %= 3 โ†’ $x<br>";

// 3. Operator Perbandingan
echo "<h3>3. Operator Perbandingan</h3>";
$c = "15";
echo "\$a = 15 (integer), \$c = '15' (string)<br>";
echo "\$a == \$c : " . (($a == $c) ? 'true' : 'false') . "<br>";
echo "\$a === \$c : " . (($a === $c) ? 'true' : 'false') . "<br>";
echo "\$a != \$c : " . (($a != $c) ? 'true' : 'false') . "<br>";
echo "\$a !== \$c : " . (($a !== $c) ? 'true' : 'false') . "<br>";
echo "\$a > \$b : " . (($a > $b) ? 'true' : 'false') . "<br>";
echo "\$a < \$b : " . (($a < $b) ? 'true' : 'false') . "<br>";
echo "\$a <=> \$b : " . ($a <=> $b) . "<br>";

// 4. Operator Logika
echo "<h3>4. Operator Logika</h3>";
$p = true;
$q = false;

echo "\$p = true, \$q = false<br>";
echo "\$p and \$q : " . (($p and $q) ? 'true' : 'false') . "<br>";
echo "\$p or \$q : " . (($p or $q) ? 'true' : 'false') . "<br>";
echo "\$p && \$q : " . (($p && $q) ? 'true' : 'false') . "<br>";
echo "\$p || \$q : " . (($p || $q) ? 'true' : 'false') . "<br>";
echo "!\$p : " . ((!$p) ? 'true' : 'false') . "<br>";

// 5. Operator Increment/Decrement
echo "<h3>5. Operator Increment/Decrement</h3>";
$i = 5;
echo "\$i = $i<br>";
echo "\$i++ : " . $i++ . " (post-increment, sekarang \$i = $i)<br>";
echo "++\$i : " . ++$i . " (pre-increment, sekarang \$i = $i)<br>";
echo "\$i-- : " . $i-- . " (post-decrement, sekarang \$i = $i)<br>";
echo "--\$i : " . --$i . " (pre-decrement, sekarang \$i = $i)<br>";

// 6. Operator String
echo "<h3>6. Operator String</h3>";
$s1 = "Hello";
$s2 = "World";
echo "\$s1 . \$s2 = " . ($s1 . " " . $s2) . "<br>";
$s1 .= " PHP";
echo "\$s1 .= ' PHP' = $s1<br>";

// 7. Operator Array
echo "<h3>7. Operator Array</h3>";
$arr1 = [1, 2, 3];
$arr2 = [3, 4, 5];
$arr3 = $arr1 + $arr2;

echo "\$arr1 + \$arr2 = ";
print_r($arr3);
echo "<br>";
echo "\$arr1 == \$arr2 : " . (($arr1 == $arr2) ? 'true' : 'false') . "<br>";

// 8. Operator Ternary dan Null Coalescing
echo "<h3>8. Operator Ternary dan Null Coalescing</h3>";
$nilai = 75;
$hasil = $nilai >= 60 ? 'Lulus' : 'Tidak Lulus';
echo "Nilai $nilai: $hasil (ternary)<br>";

$username = $_GET['user'] ?? 'Guest';
echo "Username: $username (null coalescing)<br>";

$data = null;
$result = $data ?? 'default' ?? 'fallback';
echo "Data null menjadi: $result<br>";

// 9. Operator Bitwise
echo "<h3>9. Operator Bitwise</h3>";
$m = 6;  // 110 dalam biner
$n = 3;  // 011 dalam biner

echo "\$m = 6 (110), \$n = 3 (011)<br>";
echo "\$m & \$n = " . ($m & $n) . " (AND)<br>";
echo "\$m | \$n = " . ($m | $n) . " (OR)<br>";
echo "\$m ^ \$n = " . ($m ^ $n) . " (XOR)<br>";
echo "~\$m = " . (~$m) . " (NOT)<br>";
echo "\$m << 1 = " . ($m << 1) . " (shift left)<br>";
echo "\$m >> 1 = " . ($m >> 1) . " (shift right)<br>";

// 10. Operator Eksekusi
echo "<h3>10. Operator Eksekusi (backtick)</h3>";
$output = `dir`;  // Untuk Windows
echo "<pre>" . htmlspecialchars(substr($output, 0, 500)) . "...</pre>";
?>
37

DAFTAR PUSTAKA

Buku Referensi

  1. PHP & MySQL: Novice to Ninja (Kevin Yank)
  2. Modern PHP: New Features and Good Practices (Josh Lockhart)
  3. PHP Objects, Patterns, and Practice (Matt Zandstra)
  4. Learning PHP, MySQL & JavaScript (Robin Nixon)

Sumber Online

  • PHP Official Documentation - https://www.php.net/docs.php
  • PHP The Right Way - https://phptherightway.com/
  • W3Schools PHP Tutorial - https://www.w3schools.com/php/
  • PHP Tutorial - https://www.tutorialspoint.com/php/

Tools dan Framework

  • XAMPP - https://www.apachefriends.org/
  • Composer (Dependency Manager) - https://getcomposer.org/
  • PHPUnit (Testing) - https://phpunit.de/
  • Laravel Framework - https://laravel.com/

GLOSARIUM

Array
Struktur data yang menyimpan multiple nilai dalam satu variable
Boolean
Tipe data yang hanya memiliki dua nilai: true atau false
Casting
Proses mengubah tipe data suatu nilai ke tipe data lain
CRUD
Create, Read, Update, Delete - operasi dasar pada database
Echo
Perintah untuk menampilkan output ke browser
Float
Tipe data untuk bilangan desimal
Function
Blok kode yang dapat dipanggil berulang kali
Integer
Tipe data untuk bilangan bulat
Loop
Struktur kontrol untuk mengulang eksekusi kode
MySQL
Sistem manajemen database relasional
Namespace
Cara mengelompokkan kode untuk menghindari konflik nama
Operator
Simbol untuk melakukan operasi pada nilai
Pagination
Teknik membagi data menjadi beberapa halaman
Regular Expression
Pola untuk mencocokkan string
Server-side
Kode yang dieksekusi di server, bukan di browser
Session
Cara menyimpan data user antar halaman
String
Tipe data untuk teks
Superglobal
Variable bawaan PHP yang tersedia di semua scope
Variable
Tempat menyimpan data di memori
XAMPP
Paket software untuk menjalankan PHP dan MySQL

INDEX

A

  • Array 58
  • Arithmetic operators 37

B

  • Boolean 16
  • Break 50

C

  • Casting 25
  • Comments 9
  • Constants 31
  • Continue 50
  • CRUD 72

D

  • Data types 16
  • Database 72
  • Do-while 50

E

  • Echo 14
  • Else 41

F

  • Float 16
  • For loop 50
  • Foreach 50
  • Functions 54

G

  • GET 62
  • Global 62

I

  • If-else 41
  • Include 5
  • Integer 16

L

  • Loops 50

M

  • Magic constants 34
  • Match 47
  • Math functions 28
  • MySQL 72

N

  • Null 16
  • Numbers 22

O

  • Operators 37

P

  • Pagination 72
  • POST 62
  • Print 14

R

  • RegEx 66, 69
  • Require 5
  • Return 54

S

  • Session 62
  • Server 62
  • String 19
  • Superglobals 62
  • Switch 44
  • Syntax 7

T

  • Ternary operator 37

V

  • Variables 11

W

  • While loop 50

X

  • XAMPP 5